///*
// * To change this template, choose Tools | Templates
// * and open the template in the editor.
// */
//
//
//package Capa_Fisica;
//
//
//
////Sun's serial port driver
//import javax.comm.*;
//import java.io.*;
//import java.util.*;
//
//import javax.swing.JOptionPane;
//
//public class CapaDos implements Runnable, SerialPortEventListener {
//
//    
//    static CommPortIdentifier   portId1;
//    static CommPortIdentifier   portId2;
//    static SerialPort           serialPort1;
//    static SerialPort           serialPort2;
//    public static InputStream   inputStream;
//    public static OutputStream  outputStream;
//    static String               portName;
//    static boolean              CreacionPuertoCorrecta;
//
//
//    Thread                      readThread; //Uauuuuuuuu vamos a ver donde se utilizan estos hilos!!
//    protected String            divertCode = "10";
//    static String               TimeStamp;
//
//    
//    
//    public static void main(String[] args) {
//
//        try {
//          portId1 = CommPortIdentifier.getPortIdentifier("COM3");
//          portId2 = CommPortIdentifier.getPortIdentifier("COM3");
//          ComControl reader = new ComControl();
//      }
//
//    catch
//      (Exception e) {
//      TimeStamp = new java.util.Date().toString();
//      System.out.println(TimeStamp + ": COM4 " + portId1);
//      System.out.println(TimeStamp + ": COM5 " + portId2);
//      System.out.println(TimeStamp + ": msg1 - " + e);
//     }
//    }
//
//  
//    public static void PTXRX(String portName1) {
//      
//    PortClose();
//    portName = portName1;
//    
//    try {
//        portId1     = CommPortIdentifier.getPortIdentifier(portName1);   
//        serialPort1 = (SerialPort)portId1.open("JuegoNuevoPuerto", 500);
//
//    } catch (Exception e) {
//        JOptionPane.showMessageDialog(null, "Error al abrir el puerto" + portName1);
//
//    }
//    if (serialPort1 != null) {
//        CreacionPuertoCorrecta = true;
//        JOptionPane.showMessageDialog(null, "Apertura exitosa del puerto: " + portName);
//
//        try {
//            inputStream = serialPort1.getInputStream();
//        } 
//        catch (IOException e) {
//        }
//
//        /* Lisener para ver q sucede en el puerto (Debe implementarse un ListenerMedio)
//        try {
//            serialPort1.addEventListener(new ListenerMedio());
//        } catch (TooManyListenersException e) {
//        }
//        */
//
//        // Notifiacion para cuando exitan datos diponibles para lectura en el buffer de la puerta.
//        if (serialPort1 != null) {
//            serialPort1.notifyOnDataAvailable(true);
//        }
//        // Se fijan los parametros de comunicacion del puerto
//        try {
//            if (serialPort1 != null) {
//                serialPort1.setSerialPortParams(9600, 
//                                                SerialPort.DATABITS_8, 
//                                                SerialPort.STOPBITS_1, 
//                                                SerialPort.PARITY_NONE);
//            }
//        } catch (UnsupportedCommOperationException e) {
//        }
//
//        // Se crea y lanza el thread que se va a encargar de quedarse
//        // esperando en la puerta a que haya datos disponibles
//    } else {
//        CreacionPuertoCorrecta = false;
//    }
//    System.out.println(portName + "  " + portId1);
//}
//
//
//public ComControl() {
//
//    try {
//        TimeStamp = new java.util.Date().toString();
//
//        //Este es el la forma que se utiliza para identificar el puerto (SerialPort)PortId1.open("ComControl", 2000);
//        serialPort1 = (SerialPort) portId1.open("ComControl", 2000);
//        System.out.println(TimeStamp + ": " + portId1.getName() + " opened for scanner input");
//        serialPort2 = (SerialPort) portId2.open("ComControl", 2000);
//        System.out.println(TimeStamp + ": " + portId2.getName() + " opened for diverter output");
//
//    } catch (PortInUseException e) {}
//    try {
//        inputStream = serialPort1.getInputStream();
//    } catch (IOException e) {}
//    try {
//        serialPort1.addEventListener(this);
//    } catch (TooManyListenersException e) {}
//    serialPort1.notifyOnDataAvailable(true);
//    try {
//
//        serialPort1.setSerialPortParams(9600,
//            SerialPort.DATABITS_8,
//            SerialPort.STOPBITS_1,
//            SerialPort.PARITY_NONE);
//
//        serialPort1.setDTR(false);
//        serialPort1.setRTS(false);
//
//        serialPort2.setSerialPortParams(9600,
//            SerialPort.DATABITS_7,
//            SerialPort.STOPBITS_1,
//            SerialPort.PARITY_EVEN);
//
//    } catch (UnsupportedCommOperationException e) {}
//
//    readThread = new Thread(this);
//    readThread.start();
//    }
//
//    public void run() {
//        try {
//            Thread.sleep(100);
//        } catch (InterruptedException e) {}
//    }
//
//    public void serialEvent(SerialPortEvent event) {
//        switch(event.getEventType()) {
//        case SerialPortEvent.BI:
//        case SerialPortEvent.OE:
//        case SerialPortEvent.FE:
//        case SerialPortEvent.PE:
//        case SerialPortEvent.CD:
//        case SerialPortEvent.CTS:
//        case SerialPortEvent.DSR:
//        case SerialPortEvent.RI:
//        case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
//            break;
//        case SerialPortEvent.DATA_AVAILABLE:
//            StringBuffer readBuffer = new StringBuffer();
//            int c;
//            try {
//                 while ((c=inputStream.read()) != 10){
//                   if(c!=13)  readBuffer.append((char) c);
//                 }
//                 String scannedInput = readBuffer.toString();
//                 TimeStamp = new java.util.Date().toString();
//                 System.out.println(TimeStamp + ": scanned input received:" + scannedInput);
//                 inputStream.close();
//                 if(scannedInput.substring(0,1).equals("F")){
//                   outputStream = serialPort2.getOutputStream();
//                   outputStream.write(divertCode.getBytes());
//                   System.out.println(TimeStamp + ": diverter fired");
//                   outputStream.close();
//                   } else {
//                   System.out.println(TimeStamp + ": diverter not diverted");
//                   }
//            } catch (IOException e) {}
//
//            break;
//        }
//    }
//    
//    
//    public static void PortClose() {
//        
//        if (serialPort1 != null) {
//            serialPort1.close();
//            portId1  = null;
//            portName = null;
//        }
//        CreacionPuertoCorrecta = false;
//    }
//}
//
